/*
 * Copyright (c) 2002-2004, xRhino, Inc.
 *
 * This library is free software; you can redistribute and/or modify
 * it under the terms of the dual license distributed with this source
 * package (a combined Trolltech QPL/GPL-compatible license)
 *
 * Under this dual license scheme, a separate license is available for use of 
 * this code with a proprietary (closed) system. For more information on the 
 * license, please see the LICENSE file distributed with this source package.
 */
#ifndef SUGTYPES_H
#define SUGTYPES_H

#define SugRealType	float

#include "SugColor.h"
#include "SugPoint.h"

class SugTypes 
{
 protected:
   /**
    * Empty, protected constructor. You should never construct a
    * SugTypes object.
    */
   SugTypes(){};

   /**
    * Empty, protected destructor. There is no neeSd for a destructor
    * since the object can never be constructed.
    */
   ~SugTypes(){};

 public:
   enum ElementType
      {
         /**
          * A svg element.
          */
         E_SVG,
         
         /**
          * A rectangle element.
          */
         E_RECT,
         /**
          * A path element.
          */
         E_PATH,
         /**
          * A polygon element.
          */
         E_POLYGON,
         /**
          * A polyline element.
          */
         E_POLYLINE,
         /**
          * A text element.
          */
         E_TEXT,
         /**
          * A group element.
          */
         E_G,
         /**
          * A symbol element.
          */
         E_SYMBOL,
         /**
          * A definition element.
          */
         E_DEFS,
         /**
          * A use element.
          */
         E_USE
      };

   enum TransformType
      {
         /**
          * An unknown transform type.
          */
         T_UNKNOWN,

         /**
          * A matrix type transform.
          */
         T_MATRIX,

         /**
          * A translate type transform.
          */
         T_TRANSLATE,

         /**
          * A scale type transform.
          */
         T_SCALE,

         /**
          * A rotate type transform.
          */
         T_ROTATE,

         /**
          * A skew x type transform.
          */
         T_SKEWX,

         /**
          * A skew y type transform.
          */
         T_SKEWY
      };
};

#endif
